package com.bom_samaritano.model;

import java.io.Serializable;

import com.bom_samaritano.Exception.BusinessException;

public class Person extends VOGeneric implements Serializable {

	private static final long serialVersionUID = 1L;
	public static final String COL_ID = "id";
	public static final String COL_NAME = "name";
	public static final String COL_EMAIL = "email";
	public static final String COL_PHONE = "phone";
	public static final String COL_HAS_CAR = "hascar";
	public static final String TABLE = "person";
	public static final int VERSION = 1;
	public static final String COL_LOGIN = "login";
	public static final String COL_SENHA = "senha";

	private int idUsuario;
	private String nome;
	private String email;
	private String telefone;
	private String login;
	private String senha;
	private boolean possuiCarro;

	public Person(int id, String nome, String email, String telefone,
			String login, String senha, boolean possuiCarro, int vagas) {
		super(TABLE, COL_ID);
		this.idUsuario = id;
		this.nome = nome;
		this.email = email;
		this.telefone = telefone;
		this.login = login;
		this.senha = senha;
		this.possuiCarro = possuiCarro;

	}

	public Person() {
		this(0, "not_found", "not_found", "not_found", "not_found",
				"not_found", false, -1);
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
		this.putParam(COL_NAME, nome);

	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
		this.putParam(COL_EMAIL, email);
	}

	public String getTelefone() {
		return telefone;
	}

	public void setTelefone(String telefone) {
		this.telefone = telefone;
		this.putParam(COL_PHONE, telefone);
	}

	public String getLogin() {
		return login;
	}

	public void setLogin(String login) {
		this.login = login;
		this.putParam(COL_LOGIN, login);
		// TODO
	}

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
		this.putParam(COL_SENHA, senha);
		// TODO
	}

	public boolean getPossuiCarro() {
		return possuiCarro;
	}

	public void setPossuiCarro(boolean possuiCarro) {
		this.possuiCarro = possuiCarro;
		this.putParam(COL_HAS_CAR, possuiCarro);
	}

	public int getIdUsuario() {
		return idUsuario;
	}

	public void setIdUsuario(int idUsuario) {
		this.idUsuario = idUsuario;
	}

	@Override
	public String toString() {
		return "Person [idUsuario=" + idUsuario + ", nome=" + nome + ", email="
				+ email + ", telefone=" + telefone + ", login=" + login
				+ ", senha=" + senha + ", possuiCarro=" + possuiCarro + "]";
	}

	public void validar() throws BusinessException {
		// TODO validar melhor
		// Check for a valid email address.
		if (this.getEmail() == null || !this.getEmail().contains("@")) {
			throw new BusinessException("Email Invalido");
		}

		if (this.getSenha() == null || this.getSenha().length() < 2) {
			throw new BusinessException("Senha Invalida");
		}
		// ...
	}
}
